home *** CD-ROM | disk | FTP | other *** search
/ GameStar 1998 November (Bonus) / GAMESTAR11B.ISO / ENCYC99 / MM / T620277A.DCR / Scripts_35_Class VerticalSlider.ls < prev    next >
Encoding:
Text File  |  1998-06-29  |  3.5 KB  |  152 lines

  1. property cursorGod, SlidThing, objectRect, sliderMap, grabberSprite, firstGrabber, lastGrabber, grabberOnMember, grabberOffMember, mouseIsDown, clickedOnGrabber, objectHidden
  2.  
  3. on reDraw me, xInt
  4.   moveSlider(me, fromSlidThing(me, xInt))
  5. end
  6.  
  7. on mouseEvent me, xEvent, xLoc
  8.   case xEvent of
  9.     #mouseDown:
  10.       if rollOver(grabberSprite) then
  11.         set clickedOnGrabber to 1
  12.         catchEvent(SlidThing, #grabberClicked)
  13.       end if
  14.       set mouseIsDown to 1
  15.     #mouseDrag:
  16.       set mouseIsDown to 1
  17.     #mouseUp:
  18.       set mouseIsDown to 0
  19.       if clickedOnGrabber then
  20.         set clickedOnGrabber to 0
  21.         catchEvent(SlidThing, #grabberReleased)
  22.       end if
  23.     #mouseGone:
  24.       set mouseIsDown to 0
  25.       if clickedOnGrabber then
  26.         set clickedOnGrabber to 0
  27.         catchEvent(SlidThing, #grabberReleased)
  28.       end if
  29.   end case
  30. end
  31.  
  32. on areYouThere me, xLoc
  33.   if objectHidden then
  34.     return 0
  35.   end if
  36.   shouldIMove(me, xLoc)
  37.   return inside(xLoc, objectRect)
  38. end
  39.  
  40. on turnON me
  41.   set the member of sprite grabberSprite to grabberOnMember
  42. end
  43.  
  44. on turnOff me
  45.   set the member of sprite grabberSprite to grabberOffMember
  46. end
  47.  
  48. on hide me
  49.   set the visible of sprite grabberSprite to 0
  50.   set objectHidden to 1
  51. end
  52.  
  53. on reveal me
  54.   set the visible of sprite grabberSprite to 1
  55.   set objectHidden to 0
  56. end
  57.  
  58. on new me, xRect, xSprite, xOnMember, xOffMember
  59.   set objectRect to xRect
  60.   set grabberSprite to xSprite
  61.   set grabberOnMember to xOnMember
  62.   set grabberOffMember to xOffMember
  63.   set grabberRect to the rect of sprite grabberSprite
  64.   puppetSprite(grabberSprite, 1)
  65.   return me
  66. end
  67.  
  68. on linkUp me, xSlidThing
  69.   set SlidThing to xSlidThing
  70.   makeMap(me)
  71.   updateSlider(SlidThing)
  72. end
  73.  
  74. on subscribe me, xCursor
  75.   set cursorGod to xCursor
  76.   subscribe(cursorGod, me)
  77. end
  78.  
  79. on shouldIMove me, xLoc
  80.   if mouseIsDown then
  81.     if rollOver(grabberSprite) then
  82.       if not clickedOnGrabber then
  83.         set clickedOnGrabber to 1
  84.         catchEvent(SlidThing, #grabberClicked)
  85.       end if
  86.     end if
  87.     whereShouldIGo(me, xLoc)
  88.   end if
  89. end
  90.  
  91. on whereShouldIGo me, xLoc
  92.   set thisV to the locV of xLoc
  93.   if thisV < firstGrabber then
  94.     set thisV to firstGrabber
  95.   else
  96.     if thisV > lastGrabber then
  97.       set thisV to lastGrabber
  98.     end if
  99.   end if
  100.   toSlidThing(me, thisV)
  101. end
  102.  
  103. on moveSlider me, xInt
  104.   set the locV of sprite grabberSprite to xInt
  105.   updateStage()
  106. end
  107.  
  108. on makeMap me
  109.   set slidValues to getMapInfo(SlidThing)
  110.   set slidFirst to getAt(slidValues, 1)
  111.   set slidLast to getAt(slidValues, 2)
  112.   initGrabberPoints(me)
  113.   set slidSize to slidLast - slidFirst
  114.   set grabberSize to lastGrabber - firstGrabber
  115.   set mapRatio to float(slidSize) / grabberSize
  116.   set sliderMap to [:]
  117.   repeat with i = 0 to grabberSize
  118.     set thisSlid to integer((i * mapRatio) + slidFirst)
  119.     set thisGrabber to i + firstGrabber
  120.     addProp(sliderMap, thisSlid, thisGrabber)
  121.   end repeat
  122.   sort(sliderMap)
  123. end
  124.  
  125. on fromSlidThing me, xInt
  126.   return getAt(sliderMap, findPosNear(sliderMap, xInt))
  127. end
  128.  
  129. on toSlidThing me, xInt
  130.   if clickedOnGrabber then
  131.     hardSlide(SlidThing, getOne(sliderMap, xInt))
  132.   else
  133.     softSlide(SlidThing, getOne(sliderMap, xInt))
  134.   end if
  135. end
  136.  
  137. on initGrabberPoints me
  138.   set grabberMember to the member of sprite grabberSprite
  139.   set topOff to the locV of the regPoint of grabberMember
  140.   set bottomOff to the height of sprite grabberSprite - topOff
  141.   set firstGrabber to the top of objectRect + topOff
  142.   set lastGrabber to the bottom of objectRect - bottomOff
  143. end
  144.  
  145. on turnOnGrabber me
  146.   nothing()
  147. end
  148.  
  149. on turnOffGrabber me
  150.   nothing()
  151. end
  152.